package ru.payment.wm;

import java.util.Date;

/**
 * 
 * User: sergey
 * Date: 22.04.2009
 * Time: 13:53:33
 *
 * параметры выписываемого счета
 */
public interface Invoice {

  /** атрибут id - уникальный номер счета в системе учета WebMoney */
  String getWmInvoiceId();

  /** атрибут id - уникальный номер счета в системе учета WebMoney */
  void setWmInvoiceId(String invoiceWmId);

  /** атрибут ts - служебный номер счета в системе учета WebMoney */
  String getWmTsId();

  /** атрибут ts - служебный номер счета в системе учета WebMoney */
  void setWmTsId(String tranWmId);

  /** номер счета в системе учета магазина; любое целое число без знака */
  long getOrderId();

  /** номер счета в системе учета магазина; любое целое число без знака */
  void setOrderId(long orderId);

  /** 	WMId покупателя */
  String getCustomerWmId();

  /** 	WMId покупателя */
  void setCustomerWmId(String customerWmId);

  /** 	номер кошелька, но который необходимо оплатить счет */
  String getStorePurse();

  /** 	номер кошелька, но который необходимо оплатить счет */
  void setStorePurse(String storePurse);

  /** сумма счета, выставленная для оплаты покупателю. */
  float getAmount();

  /** сумма счета, выставленная для оплаты покупателю. */
  void setAmount(float amount);

  /** описание товара или услуги, на который выписывается счет */
  String getDescription();

  /** описание товара или услуги, на который выписывается счет */
  void setDescription(String description);

  /** 	адрес доставки товара */
  String getAddress();

  /** 	адрес доставки товара */
  void setAddress(String address);

  /** 	максимально допустимый срок протекции сделки в днях при оплате счета. целое число от 0 до 255; если 0 - протекция сделки при оплате счета не разрешена */
  int getPeriod();

  /** максимально допустимый срок протекции сделки в днях при оплате счета. целое число от 0 до 255; если 0 - протекция сделки при оплате счета не разрешена */
  void setPeriod(int period);

  /** максимально допустимый срок оплаты счета в днях. целое число от 0 до 255; если 0 - срок оплаты не определен */
  int getExpiration();

  /** максимально допустимый срок оплаты счета в днях. целое число от 0 до 255; если 0 - срок оплаты не определен  */
  void setExpiration(int expiration);

  /** состояние счета. */
  InvoiceState getState();

  /** состояние счета. */
  void setState(InvoiceState state);

  /** дата и время создания счета */
  Date getCreateDate();

  /** дата и время создания счета */
  void setCreateDate(Date createDate);

  /** последняя дата и время изменения состояния счета */
  Date getUpdateDate();

  /** последняя дата и время изменения состояния счета */
  void setUpdateDate(Date updateDate);

  /** кошелек плательщика, если счет оплачен */
  public String getCustomerPurse();

  /** кошелек плательщика, если счет оплачен */
  public void setCustomerPurse(String customerPurse);

  /** номер операции в системе WebMoney, если счет оплачен */
  public long getWmTransactionId();

  /** номер операции в системе WebMoney, если счет оплачен */
  public void setWmTransactionId(long wmTranId);

}
